package com.generic;

/**
 * @author LingLed
 * @version 1.0
 */
public class Generic02 {
    public static void main(String[] args) {
        //泛型是在jdk5之后才出现的
        //泛型可以是任意类型,也可以在创建对象时指定必须为某类型
        Person<String> person = new Person<String>("Ling");
        //Person类指定了泛型E,这里实例化Person时在遍历类型后使用了<String>,指定了这个E一定为String类型
        //String类型赋值给E,E的类型就确定为了String
        //String类型的赋值操作,在编译阶段会检查类型是否符合要求,不符合要求编译失败
        person.showE();

        //也可以为任意类型
        Person person1 = person;
        person1.e = Integer.valueOf(1);
        person.showE();
        person1.e = Double.valueOf(1);
        person.showE();
        person1.e = Float.valueOf(1);
        person.showE();
    }
}

class Person<E>{
    E e;

    public Person(E e) {
        this.e = e;
    }

    public void showE(){
        System.out.println(e.getClass());
    }
}